/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.pucp.Util;

import java.awt.event.KeyEvent;
import java.text.DateFormat;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import pe.edu.pucp.Modelo.Configuracion;
/**
 *
 * @author jorge
 */
public class ValHelper {

    public static String letras = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    public static String digitos = "0123456789";    
    public static String especiales = "@#$%^&*()_+=><!¡?¿-";
    public static String erroneos = "”¢€→¶↓“»←«°{}[]¬|·~½¬`~\\|\"/";
    public static String puntuacion = "“,.:;'";

    public static void mostrarError(String mensaje){                
        JOptionPane.showMessageDialog(null, mensaje, "Error", JOptionPane.ERROR_MESSAGE, new ImageIcon("src/main/resources/Recurso/block.png"));
        
    }
    public static void mostrarAviso(String mensaje){
        JOptionPane.showMessageDialog(null, mensaje, "Información", JOptionPane.INFORMATION_MESSAGE,new ImageIcon("src/main/resources/Recurso/info.png"));
    }
    
    public static void mostrarAlerta(String mensaje){
        JOptionPane.showMessageDialog(null, mensaje, "Información", JOptionPane.WARNING_MESSAGE,new ImageIcon("src/main/resources/Recurso/warning.png"));
    }
    
    public static int solicitarConfirmacion(String mensaje){
        return JOptionPane.showConfirmDialog(null, mensaje, "Confirmación",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,new ImageIcon("src/main/resources/Recurso/help.png"));
    }  
    
    public static String generarNombreUsuario(String nomb, String appaterno){
        return nomb.substring(0,1)+appaterno;
    }
   

    public static String fechaMenu(Date fecha){
        return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(fecha);
    }      
    
    public static int cantidadLetras(String cad){
        int cant=0;
        for (int i=0;i<cad.length();i++){
            char c = cad.charAt(i);
            if (letras.indexOf(c) > -1) cant++;
        }
        return cant;
    }

    public static int cantidadDigito(String cad){
        int cant=0;
        for (int i=0;i<cad.length();i++){
            char c = cad.charAt(i);
            if (digitos.indexOf(c) > -1) cant++;
        }
        return cant;    
    }    
    
    public static int cantidadEspeciales(String cad){
        int cant=0;
        for (int i=0;i<cad.length();i++){
            char c = cad.charAt(i);
            if (especiales.indexOf(c) > -1) cant++;
        }
        return cant;        
    }

    public static void general(KeyEvent evt) {        
        char c = evt.getKeyChar();
        String badchars = erroneos;
        if(badchars.indexOf(c) > -1) {
            evt.consume();
        }
    }
        
    
    public static void soloTexto(KeyEvent evt) {        
        char c = evt.getKeyChar();
        String badchars = digitos+especiales+puntuacion+erroneos;
        if(badchars.indexOf(c) > -1) {
            evt.consume();
        }
    }
    
    public static void soloDigito(KeyEvent evt) {        
        char c = evt.getKeyChar();
        String badchars = letras+especiales+puntuacion+erroneos;
        if(Character.isLetter(c) || badchars.indexOf(c) > -1) {
            evt.consume();
        }
    }    

    public static void soloDigitoPunto(KeyEvent evt) {        
        char c = evt.getKeyChar();
        String badchars =letras+especiales+erroneos;
        if(Character.isLetter(c) || badchars.indexOf(c) > -1) {
            evt.consume();
        }
    }      

    public static void caracterUnico(KeyEvent evt, String texto, char cr) {        
        char c = evt.getKeyChar();        
        if(c==cr && texto.indexOf(c) !=-1) {
            evt.consume();
        }
    }     
    
    public static void soloDigitoTexto(KeyEvent evt) {        
        char c = evt.getKeyChar();
        String badchars = puntuacion+especiales+erroneos;
        if(badchars.indexOf(c) > -1) {
            evt.consume();
        }
    }      
    
    public static void soloDigitoTextoPuntuacion(KeyEvent evt) {        
        char c = evt.getKeyChar();
        String badchars = especiales+erroneos;
        if(badchars.indexOf(c) > -1) {
            evt.consume();
        }
    }     

    public static void soloDigitoTextoEspecial(KeyEvent evt) {        
        char c = evt.getKeyChar();
        String badchars = puntuacion+erroneos;
        if(badchars.indexOf(c) > -1) {
            evt.consume();
        }
    }     
    
    public static String generarPass(Configuracion conf){
        String pass="";
        int longLetras = letras.length();
        int longNumeros = digitos.length();        
        int longEspecial = especiales.length();   
        for(int i=0; i<conf.getNumcaralf();i++){
            int numero = (int)(Math.random()*(longLetras));
            String caracter=letras.substring(numero, numero+1);
            pass=pass+caracter;
        }
        for(int i=0; i<conf.getNumcarnum();i++){
            int numero = (int)(Math.random()*(longNumeros));
            String caracter=digitos.substring(numero, numero+1);
            pass=pass+caracter;
        }        
        for(int i=0; i<conf.getNumcaresp();i++){
            int numero = (int)(Math.random()*(longEspecial));
            String caracter=especiales.substring(numero, numero+1);
            pass=pass+caracter;
        }                
        return pass;
    }
      
}
